#include<iostream>
//每次两两比较，后面打就交换，最后把最大的放在尾部，再去前面的区间重复

using namespace std;
const int N=1e5+10;
int a[N];
int n;
// void Sort()//未优化，
// {
// 	for(int i=n-1;i>0;i--)
// 	{
// 		//[0,i]待处理的
// 		for(int j=0;j<i;j++)
// 		{
// 			if(a[j+1]<a[j]) swap(a[j],a[j+1]);
// 		}
// 	}
// }
//优化:当一趟操作中，不在交换了，说明此时已经是升序了
void Sort()//未优化，
{
	for(int i=n-1;i>0;i--)
	{
		bool flag=false;
		//[0,i]待处理的
		for(int j=0;j<i;j++)
		{
			if(a[j+1]<a[j]) 
			{
				swap(a[j],a[j+1]);
				flag=true;
			}
		}
		if(!flag) return;
	}
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	Sort();
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}